/*
    定义日志消息类，进行日志中间信息的存储：
    1.日志的输出时间    用于过滤日志的输出时间
    2.日志等级          用于进行日志过滤分析
    3.源文件名称        
    4.源代码行号        用于定位发生错误的代码
    5.线程id            用于过滤出错的线程
    6.日志消息主题
    7.日志器名称        (多日志器使用)
 */
#ifndef __M_MSG_H__
#define __M_MSG_H__
#include "util.hpp"
#include "level.hpp"
#include <iostream>
#include <string>
#include <thread> 

namespace log
{
    struct LogMsg{
        time_t _ctime;//日志产生的时间戳
        LogLevel::value _level;//日志等级
        size_t _line;//行号
        std::thread::id _tid;//线程id
        std::string _file;//源文件
        std::string _logger;//日志器名称
        std::string _payload;//消息主体

        LogMsg(LogLevel::value level,
            size_t line,
            const std::string file,
            const std::string logger,
            const std::string msg)
            :
            _ctime(util::Date::now()),
            _level(level),
            _line(line),
            _tid(std::this_thread::get_id()),
            _file(file),
            _logger(logger),
            _payload(msg)
        {}
    };
} // namespace name

#endif